#!/bin/bash
#
#条件表达式
#
#表达式类型  test 或 [   ]注意括号首尾均有空格
#
#    1）判断文件类型 常用  -f 文件 、-d 目录  、-b 块设备
#    2）文件或目录是否存在 -e
#    3）文件或目录操作属性 -w 可写 、-r 可读 、-x 可执行    
#


#文件类型判断,文件测试符

#1）简单判断文件或目录是否存在
echo "请输入你要判断文件或目录"
read filename

if [ -e $filename ]
then
    echo "你输入的文件或目录存在"
    echo $filename

else
    echo "请重新输入你要判断文件或目录"
fi


echo "第一条程序已经执行完毕"

#2）判断文件和目录存在的同时判断还是目录

echo "请输入要测试的文件或目录"
read testfile

if test -e $testfile
then
    if [ -d $testfile ]
    then
        echo "你输入的是目录"
        echo $testfile
    
    elif [ -f $testfile  ]
    then
        
        echo "你输入的是文件"
        echo $testfile
    
    else
        
        echo "你输入的文件类型还没有判断，请检查"
        
        echo $testfile

    fi

else

echo "请再次输入你要判断的内容"

fi



# 字符串运算符，用来判断字符串表达式的真假
# str1 = str2  str1与str2相同，为真
# str1 != str2 str1与str2不相同，为真
# str    str不为空，为真
# -n str 长度大于零，为真
# -z str 长度等于零，位置


stra=a

if [ $stra = a ]
then
  echo "a=a"
else
  echo "a!a"
fi



strb=a

if test $strb != b
then
  echo "a!=b"
else
  echo "a=b"
fi

strc=""

if test $strc
then 
  echo "$strc is not null"
else
  echo "$strc is null"

fi


if test -n $strb
then
  echo "strb is have value"
else
  echo "strb is blank"
fi



if test -z $strc
then 
  echo "strc is blank"
else
  echo "strc is zero"

fi



#逻辑运算符
#bash 中逻辑值有：1为假，0为真
# a -a b ,逻辑a和b 都同时成立才为真
# a -o b, 逻辑a或b 成立时候就为真
# ! a ,对 a的逻辑值取反

if [ a = a -a b = b ]
then
  echo "两个条件都成立"
fi

if [ a = c -o b = b ]
then 
  echo "上面逻辑值都成了"
    
fi

if [ ! a = a ]
then 
  echo "逻辑值! a = a"
else
  echo "逻辑进行 取反"
fi



# 数值比较
#     int1 -eq int2     如果 int1=int2 则为真
#     int1 -ge int2     如果 int1>=int2则为真
#     int1 -gt int2     如果 int1>int2则为真
#     int1 -le int2     如果 int1<=int2则为真
#     int1 -lt int2     如果 int1<int2 则为真
#     int1 -ne int2    如果 int1!=int2 则为真

if [ 4 -eq 4 ]
then
   echo "两个数值相等"
fi


if [ 5 -gt 3 ]
then
     echo "5>3"
fi












